/*
GORM 数据库操作
*/

package db

import (
	"fmt"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mssql"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

func DbConn(dbDriver string, user string, password string, host string, port int, dbName string, charSet string) *gorm.DB {

	connArgs := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=%s&parseTime=True&loc=Local", user, password, host, port, dbName, charSet)
	fmt.Println(connArgs)

	db, err := gorm.Open(dbDriver, connArgs)
	if err != nil {
		fmt.Println("本次未获取到mysql连接")
		panic(err)
	}

	db.SingularTable(true) //如果使用gorm来帮忙创建表时，这里填写false的话gorm会给表添加s后缀，填写true则不会
	db.LogMode(true)       //打印sql语句
	//开启连接池
	db.DB().SetMaxIdleConns(100)   //最大空闲连接
	db.DB().SetMaxOpenConns(10000) //最大连接数
	db.DB().SetConnMaxLifetime(30) //最大生存时间(s)

	return db
}
